﻿//    nVLC
//    
//    Author:  Roman Ginzburg
//
//    nVLC is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    nVLC is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//    GNU General Public License for more details.
//     
// ========================================================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Declarations.Filters
{
   /// <summary>
   /// Represents text overlay filter functionality.
   /// </summary>
   public interface IMarqueeFilter
   {
      /// <summary>
      /// Enables or disables text overlay.
      /// </summary>
      bool Enabled { get; set; }

      /// <summary>
      /// Marquee text to display.
      /// (Available format strings:
      /// Time related: %Y = year, %m = month, %d = day, %H = hour,
      /// %M = minute, %S = second, ... 
      /// Meta data related: $a = artist, $b = album, $c = copyright,
      /// $d = description, $e = encoded by, $g = genre,
      /// $l = language, $n = track num, $p = now playing,
      /// $r = rating, $s = subtitles language, $t = title,
      /// $u = url, $A = date,
      /// $B = audio bitrate (in kb/s), $C = chapter,
      /// $D = duration, $F = full name with path, $I = title,
      /// $L = time left,
      /// $N = name, $O = audio language, $P = position (in %), $R = rate,
      /// $S = audio sample rate (in kHz),
      /// $T = time, $U = publisher, $V = volume, $_ = new line) 
      /// </summary>
      string Text { get; set; }

      /// <summary>
      /// Color of the text that will be rendered on the video.
      /// </summary>
      VlcColor Color { get; set; }

      /// <summary>
      /// You can enforce the marquee position on the video.
      /// </summary>
      Position Position { get; set; }

      /// <summary>
      /// Number of milliseconds between string updates. This is mainly useful when using meta data or time format string sequences.
      /// </summary>
      int Refresh { get; set; }

      /// <summary>
      /// Font size, in pixels. Default is -1 (use default font size).
      /// </summary>
      int Size { get; set; }

      /// <summary>
      /// Number of milliseconds the marquee must remain displayed. Default value is 0 (remains forever).
      /// </summary>
      int Timeout { get; set; }

      /// <summary>
      /// X offset, from the left screen edge.
      /// </summary>
      int X { get; set; }

      /// <summary>
      /// Y offset, down from the top.
      /// </summary>
      int Y { get; set; }

      /// <summary>
      /// Opacity (inverse of transparency) of overlayed text. 0 = transparent, 255 = totally opaque. 
      /// </summary>
      int Opacity { get; set; }
   }
}
